Zum Hauptinhalt springen

REST APIs ansprechen

Eine REST API (Representational State Transfer) ist die heute übliche Methode wie Softwaresysteme miteinander kommunizieren. Wenn ein ERP-System, ein CRM, ein Bezahldienst oder ein Cloudtool eine Schnittstelle anbietet, ist es fast immer eine REST API. In 42°OS sprichst du REST APIs über den Post Agent an.


Das Grundprinzip​

Eine REST API funktioniert wie ein Gespräch nach festen Regeln:

  • Du schickst eine Anfrage (Request) an eine bestimmte URL
  • Die URL identifiziert eine Ressource: https://api.example.com/kunden/42
  • Die HTTP-Methode bestimmt was du tun willst
  • Du bekommst eine Antwort (Response) mit einem Statuscode und meistens einem JSON-Body zurück

HTTP-Methoden​

MethodeBedeutungBeispiel
GETDaten abrufenKunden-Datensatz lesen
POSTNeuen Datensatz anlegenBestellung erstellen
PUTDatensatz vollständig ersetzenKundendaten aktualisieren
PATCHDatensatz teilweise aktualisierenNur Status ändern
DELETEDatensatz löschenBestellung stornieren

HTTP-Statuscodes​

Die Antwort enthält immer einen dreistelligen Statuscode:

BereichBedeutungBeispiele
2xxErfolg200 OK, 201 Created, 204 No Content
3xxWeiterleitung301 Moved Permanently
4xxFehler auf deiner Seite400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xxFehler auf der Gegenseite500 Internal Server Error, 503 Service Unavailable

Ein Workflow sollte auf den Statuscode reagieren — ein 401 bedeutet Authentifizierungsproblem, ein 404 bedeutet die Ressource existiert nicht, ein 500 ist ein temporäres Problem beim Zielsystem.


Authentifizierungsverfahren​

Die meisten APIs erfordern eine Form der Authentifizierung. Die gängigsten Verfahren:

API Key im Header​

Einfachstes Verfahren. Ein geheimer Schlüssel wird bei jeder Anfrage im Header mitgeschickt:

{
"post_url": "https://api.example.com/v1/daten",
"method": "get",
"headers": {
"X-API-Key": "{% credential mein_api_key %}"
}
}

Der tatsächliche Schlüssel wird im Credential-Store hinterlegt und per {% credential name %} eingebunden — er erscheint nie im Klartext in der Konfiguration.

Bearer Token (OAuth 2.0)​

Verbreitet bei modernen APIs (Microsoft, Google, Salesforce, ...). Ein Token wird im Authorization-Header übermittelt:

{
"headers": {
"Authorization": "Bearer {% credential oauth_token %}"
}
}

Bei OAuth 2.0 hat das Token eine begrenzte Gültigkeit. Je nach API muss ein separater Workflow das Token regelmäßig erneuern (Token Refresh) und im Credential-Store aktualisieren.

Basic Auth​

Benutzername und Passwort werden Base64-kodiert im Header übermittelt. Heute selten bei modernen APIs, noch anzutreffen bei älteren Systemen:

{
"headers": {
"Authorization": "Basic {% credential basic_auth_encoded %}"
}
}

Der Credential-Eintrag enthält den bereits Base64-kodierten String benutzername:passwort.

API Key als Query-Parameter​

Manche älteren APIs erwarten den Schlüssel in der URL:

{
"post_url": "https://api.example.com/daten?api_key={% credential api_key %}&format=json",
"method": "get"
}

Der Post Agent in 42°OS​

Der Post Agent übernimmt alle HTTP-Anfragen. Kernkonfiguration:

{
"post_url": "https://api.example.com/v1/bestellungen",
"method": "post",
"content_type": "json",
"payload": {
"kunden_id": "{{ kunden_id }}",
"artikel": "{{ artikel }}",
"menge": "{{ menge }}"
},
"headers": {
"Authorization": "Bearer {% credential api_token %}"
},
"emit_messages": true
}

Wichtige Optionen:

OptionBedeutung
post_urlZiel-URL, Liquid-Templates möglich
methodget, post, put, patch, delete
content_typejson, form, xml oder MIME-Typ
payloadRequest-Body oder Query-Parameter bei GET
headersZusätzliche HTTP-Header
emit_messagesAntwort als Nachricht weitergeben
output_modeclean (nur Antwort) oder merge (Antwort + Eingangsnachricht)

Antwort verarbeiten​

Wenn emit_messages: true gesetzt ist, gibt der Agent eine Nachricht mit drei Feldern aus:

{
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"body": "{\"id\": \"ORD-12345\", \"status\": \"created\"}"
}

body ist ein String — für die Weiterverarbeitung muss er per JSON Parse Agent in ein Objekt umgewandelt werden.

GET-Anfrage mit Parametern​

Bei GET werden Parameter als Query-String an die URL angehängt:

{
"post_url": "https://api.example.com/v1/kunden",
"method": "get",
"payload": {
"status": "aktiv",
"limit": "50",
"since": "{{ seit_datum }}"
},
"headers": {
"Authorization": "Bearer {% credential api_token %}"
},
"emit_messages": true
}

Ergibt die URL: https://api.example.com/v1/kunden?status=aktiv&limit=50&since=2026-01-01


Dynamische URLs mit Liquid​

Die post_url unterstützt Liquid-Ausdrücke — hilfreich wenn die ID einer Ressource Teil der URL ist:

{
"post_url": "https://api.example.com/v1/kunden/{{ kunden_id }}/bestellungen",
"method": "get"
}

Fehlerbehandlung​

Ein häufiges Muster: nach dem Post Agent einen Switch Agent einsetzen der auf den Statuscode reagiert:

Post Agent
↓
Switch Agent: status == 200 → weiterverarbeiten
status == 401 → Fehler-Workflow (Token abgelaufen?)
status == 404 → Ressource nicht gefunden
status >= 500 → Retry oder Benachrichtigung

Sicherheit​

Alle Credentials — API Keys, Tokens, Passwörter — gehören in den Credential-Store der Plattform, nicht direkt in die Agent-Konfiguration. Nur der Name des Credential-Eintrags erscheint in der Konfiguration, der Wert selbst ist verschlüsselt gespeichert.

Ausschließlich HTTPS-URLs verwenden. HTTP-Verbindungen übertragen Credentials unverschlüsselt.